<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
        const obj = {
            a: 10,
            b: 20,
            c: 30,
            d: {
                x: 100,
                y: 123
            }
        }
        Object.assign(obj, { e: 40 }); // 追加一个d=40进去
        console.log(obj); // {a: 10, b: 20, c: 30, d: 40}


        const obj1 = Object.assign({}, obj, { e: 50 });
        // assign的第一个参数为target，即指派的对象，后面参数为source，即源头


        // 此时，obj中依旧只有a,b,c,d;而obj1中多了e
        // obj1{a: 10, b: 20, c: 30, d: 40, e: 50}


        // 只是浅一层是是深拷贝，对于复杂一些的对象比如：obj1= { a:10,b:{x:101, y；102}，c:3}
        // 通过Object.assign操作后，修改x或者y的值会连并修改，也就是浅拷贝


        const obj2 = Object.assign({}, obj);


        // 修改obj的d的x的值
        obj.d.x = 11231;
        console.log(obj.d.x);//11231
        console.log(obj2.d.x); //11231
    </script>
</body>

</html>